using System;
using System.Collections.Generic;

using PMServiceDesk.DataType;
using PMServiceDesk.DataAccess;

namespace PMServiceDesk.BusinessLogic
{
    public class EstadoPaqueteTrabajoLogic
    {
        #region Variables

        private EstadoPaqueteTrabajoData _estadoPaqueteTrabajoData;

        #endregion

        #region Constructores

        public EstadoPaqueteTrabajoLogic()
        {
            _estadoPaqueteTrabajoData = new EstadoPaqueteTrabajoData();
        }

        #endregion

        #region Metodos

        public EstadoPaqueteTrabajoType CargarPorId(string id)
        {
            _estadoPaqueteTrabajoData.FiltrarPorId(id);

            return _estadoPaqueteTrabajoData.Cargar();
        }

        public void Grabar(EstadoPaqueteTrabajoType estadoPaqueteTrabajo)
        {
            _estadoPaqueteTrabajoData.Grabar(estadoPaqueteTrabajo);
        }

        public List<EstadoPaqueteTrabajoType> CargarExplorador(string id,string tipoPaqueteTrabajoId,string nombre,string descripcion)
        {
            if(id != "") _estadoPaqueteTrabajoData.FiltrarPorId(id);
            if(tipoPaqueteTrabajoId != "") _estadoPaqueteTrabajoData.FiltrarPorTipoPaqueteTrabajoId(tipoPaqueteTrabajoId);
            if(nombre != "") _estadoPaqueteTrabajoData.FiltrarPorNombre(nombre);
            if(descripcion != "") _estadoPaqueteTrabajoData.FiltrarPorDescripcion(descripcion);

            return _estadoPaqueteTrabajoData.CargarListaVista();
        }

        public List<EstadoPaqueteTrabajoType> CargarEstadosInicialesPorProyecto(string proyectoId)
        {
            _estadoPaqueteTrabajoData.FiltrarPorProyecto(proyectoId);
            _estadoPaqueteTrabajoData.FiltrarPorOrden("1");
            _estadoPaqueteTrabajoData.FiltrarPorHabilitado(true);

            return _estadoPaqueteTrabajoData.CargarLista();
        }

        public List<EstadoPaqueteTrabajoType> CargarExploradorPaginado(EstadoPaqueteTrabajoType registroBusqueda, int paginaActual = 0, int cantidadMostrar = 0, string orderBy = "")
        {
            _estadoPaqueteTrabajoData.FiltrarPorTipoPaqueteTrabajoId(registroBusqueda.TipoPaqueteTrabajoId);
            if (registroBusqueda.Orden != "") _estadoPaqueteTrabajoData.FiltrarPorOrden(registroBusqueda.Orden);
            if (registroBusqueda.Nombre != "") _estadoPaqueteTrabajoData.FiltrarPorNombre(registroBusqueda.Nombre);
            if (registroBusqueda.Descripcion != "") _estadoPaqueteTrabajoData.FiltrarPorDescripcion(registroBusqueda.Descripcion);

            return _estadoPaqueteTrabajoData.CargarListaVista(paginaActual, cantidadMostrar, orderBy);
        }

        #endregion
    }
}
